package com.yimin.GenCode.imp;

import com.yimin.GenCode.InterfaceS.GetApByTypeAndTableName;
import org.springframework.beans.factory.annotation.Value;

public class GetApPathByTypeAndTableNameImp implements GetApByTypeAndTableName {


    @Value("${gen.code.mybatisXmlPath}")
    String xmlPath;

    @Value("${gen.code.mybatisServerPath}")
    String serverPath;

    @Value("${gen.code.mybatisTemplateXmlPath}")
    String xmlTemplatePath;



    /**
     * 这是根据tableName 去自动生成去访问路径的方法 用来头文件导入相关依赖  这里其实就得确定名称的生成规则了
     * @param Type  类型  xml  mybatisServer WebApi 一共这几种
     * @param TableName 表名称
     * @return 返回访问路径
     *
     *
     */
    @Override
    public String getApPathByTypeAndTableName(String Type, String TableName) {


        if(Type.equals("xml")){
            return   xmlPath+"\\"+"Mapper"+humpTransition(TableName)+".xml";
        }else if(Type.equals("mybatisServer")){
            return   serverPath+"\\"+"MybatisServer"+humpTransition(TableName)+".java";
        }else if(Type.equals("webApi")){
            return   xmlTemplatePath+"\\"+"WebApi"+humpTransition(TableName)+"Controller.java";
        }else{
            return "当前类型没有匹配项,请及时确认";
        }





    }




    public static String humpTransition(String  stringS){

        String[] StringSz=stringS.split("_");

        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < StringSz.length; i++) {
            String word = StringSz[i];
            if (i == 0) {
                word = word.isEmpty() ? word : word.toLowerCase();
            } else {
                word = word.isEmpty() ? word : Character.toUpperCase(word.charAt(0)) + word.substring(1).toLowerCase();
            }
            builder.append(word);
        }
        return builder.toString();

    }




}
